package com.yangjiangtao.reflect.ioc;

import org.springframework.stereotype.Component;

//刘德华为扮演革离的演员，实现革离的接口
@Component
public class LiuDeHua implements GeLi {

    public void responseAsk(String saying) {
        System.out.println(saying);
    }
}
//GeLi接口：这是一个接口，定义了一个responseAsk方法。在这个项目中，GeLi接口代表了一个角色。
//LiuDeHua类：这个类实现了GeLi接口，代表了一个具体的角色。在responseAsk方法中，它会打印出传入的字符串。
//MoAttack类：这个类代表了一个场景。它有一个GeLi类型的成员变量，表示这个场景中的角色。MoAttack类有一个setGeli方法，这个方法使用了@Autowired注解，表示Spring会自动将一个GeLi类型的bean注入到这个方法中。MoAttack类还有一个cityGateAsk方法，这个方法会调用geli的responseAsk方法，表示在这个场景中，角色会做出一些反应。
//Director类：这个类代表了导演，它负责组织和运行整个场景。在direct方法中，它首先创建了一个Spring的ApplicationContext，然后从这个ApplicationContext中获取了moAttack的bean，最后调用了moAttack的cityGateAsk方法，表示开始运行这个场景。
//在这个项目中，MoAttack和GeLi是两个bean，它们之间的关系是依赖关系，MoAttack依赖于GeLi。这个依赖关系是通过MoAttack类的setGeli方法和@Autowired注解来实现的。当Spring创建moAttack bean时，它会自动找到一个GeLi类型的bean（在这个项目中，就是LiuDeHua），并将这个bean注入到setGeli方法中，从而完成依赖注入。